﻿//////////////////////////////////////////////////////////////////////////////
//
// Copyright © 1998-2024 Glodon Company Limited.
//
// Licensed under the MIT License
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the “Software”),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
//////////////////////////////////////////////////////////////////////////////
#pragma once

#include "GbmpModel.h"
#include "IParameterDefinition.h"

#define DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(internalName) \
    GBMP_MODEL_EXPORT const gcmp::IParameterDefinition* GetParamDef_##internalName();

//namespace gcmp
//{
//    namespace BuiltInParameterDefinitions
//    {
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(TestElementLengthBuiltInParameter);                     // 长度
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(TestElementWidthBuiltInParameter);                      // 宽度
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(TestElementHeightBuiltInParameter);                     // 高度
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(TestElementFlagBuiltInParameter);                       // IntFlag,模拟建筑内外墙
        // 新GBMP族模板
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(StraightLineLengthBuiltInParameter);       // 族模板中的直线构件的长度参数（由于不能表达圆弧长度，GBMP项目中并不使用该参数显示构件长度）

        // 结构构件参数
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(BuildingStoreyBuiltInParameter);          // 所属楼层

        // 新视图
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(GbmpViewWorkLevelBuiltInParameter)        //工作楼层
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(ModelViewSectionBoxBuiltInParameter);      // 剖切盒
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(SectionBoxCropByRenderingBuiltInParameter);      // 剖切盒是否使用渲染裁剪

        // 结构构件参数
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(CategorySubTypeBuiltInParameter);         // 类别子类型
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(StructureTypeBuiltInParameter);           // 结构类型
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(LineFamilyPositionCurveSideBuiltInParameter);    // 线式族的定位线位置（左侧/中心/右侧）
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(AreaBuiltInParameter);                       // 面积
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(VolumeBuiltInParameter);                     // 体积
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(SectionShapeBuiltInParameter);               // 截面形状
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(CoreThicknessBuiltInParameter);              // 核心层厚度
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(TopElevationBuiltInParameter);            // 顶部高程
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(BottomElevationBuiltInParameter);         //底部高程
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(StartTopElevationBuiltInParameter);       //起点顶部高程
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(StartBottomElevationBuiltInParameter);     //起点底部高程
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(EndTopElevationBuiltInParameter);         //终点顶部高程
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(EndBottomElevationBuiltInParameter);       //终点底部高程
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(ConcreteStrengthGradeBuiltInParameter);    // 结构构件的混凝土强度等级

        //柱
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(ColumnTopSectionType);              // 柱顶部截面样式
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(ColumnBottomSectionType);           // 柱底部截面样式

        // 梁
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(BeamAngleBuiltInParameter);                   // 梁的倾斜角度
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(BeamYPositioningTypeBuiltInParameter);        // 梁的Y轴定位线位置（左侧/中心线/右侧）
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(BeamZPositioningTypeBuiltInParameter);        // 梁的Z轴定位线位置（梁底部/梁顶部）
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(BeamBottomOffsetBuiltInParameter);            // 梁的底面偏移（根据Z轴定位线位置约束截面轮廓位置，内部使用）
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(VariableSectionBeamBottomAngleBuiltInParameter); //变截面梁的底部倾斜角度

        // 墙
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(WallStartTopOffsetBuiltInParameter);             // 墙的起点顶偏移
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(WallStartBottomOffsetBuiltInParameter);          // 墙的起点底偏移
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(WallEndTopOffsetBuiltInParameter);               // 墙的终点顶偏移
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(WallEndBottomOffsetBuiltInParameter);            // 墙的终点底偏移
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(VariableSectionWallMaxHeightBuiltInParameter);   // 变截面墙的最大高度
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(WallStartHeightBuiltInParameter);                // 墙的起点高度
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(WallEndHeightBuiltInParameter);                  // 墙的终点高度

        // 楼板
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(FloorCoreThicknessBuiltInParameter);                // 楼板核心层厚度
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(FloorCompensationThicknessBuiltInParameter);        // 楼板补偿厚度（内部计算用）
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(FloorSlopeDefinitionTypeBuiltInParameter);          // 楼板坡度定义方式
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(FloorSlopeStartOffsetBuiltInParameter);             // 楼板坡度线的起点偏移（注意与起点高度区分）
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(FloorSlopeEndOffsetBuiltInParameter);               // 楼板坡度线的终点偏移（注意与终点高度区分）
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(FloorSlopeAngleValueBuiltInParameter);              // 楼板坡度线的坡度值
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(FloorSlopeAngleBuiltInParameter);                   // 楼板的坡度角
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(FloorSlopeStartHeightBuiltInParameter)             //楼板的坡度线起点高度（注意与起点偏移区分，起点高度=标高值+标高偏移值+起点偏移）
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(FloorSlopeEndHeightBuiltInParameter)               //楼板的坡度线终点高度（注意与终点偏移区分，终点高度=标高值+标高偏移值+终点偏移）

        //筏板
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(RaftFoundationThicknessBuiltInParameter);         //筏板基础厚度
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(RaftFoundationZPositioningTypeBuiltInParameter);  //筏板基础Z轴定位线位置（底部/顶部）
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(RaftFoundationTopPositionOffsetBuiltInParameter); //筏板基础的顶部相对于上下中心面的偏移，仅内部用于筏板顶面定位

        // 屋顶
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(RoofProfileCurveDefineSlopeBuiltInParameter);         // 屋顶轮廓线是否定义坡度
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(RoofProfileCurveSlopeAngleValueBuiltInParameter);     // 屋顶轮廓线的坡度值
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(RoofProfileCurveOffsetBuiltInParameter);              // 屋顶轮廓线与屋顶基准的偏移

        // 新轴网
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(GridStartTagVisibilityInPlanViewBuiltInParameter);    // 新轴网：平面视图轴号端点1是否显示
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(GridEndTagVisibilityInPlanViewBuiltInParameter);      // 新轴网：平面视图轴号端点2是否显示

        // 新标高
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(LevelStartHeaderVisibilityBuiltInParameter);    // 新标高：标高端点1是否显示
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(LevelEndHeaderVisibilityBuiltInParameter);      // 新标高：标高端点2是否显示
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(LevelElevationBuiltInParameter);                // 新标高：标高高度
        
        // 新标高标头
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(LevelTriangleHeaderDirectionBuiltInParameter);  // 三角型标头方向的类型
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(LevelHeaderTypeBuiltInParameter);               // 标头符号类型

        // 墙洞
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(WallHoleThicknessBuiltInParameter);           // 墙洞洞口厚度（内部使用)
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(WallHoleZPositioningTypeBuiltInParameter);    // 墙洞竖直方向上的定位位置（中心/底边）
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(WallHoleBottomOffsetBuiltInParameter);        // 墙洞的底部偏移（内部使用)

        // 板洞
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(PlateHoleThicknessBuiltInParameter);           // 板洞厚度参数

        // 条形基础
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(StripFoundationZPositioningTypeBuiltInParameter);    // 条形基础竖直方向上的定位位置（基础顶部、基础底部）
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(StripFoundationBottomOffsetBuiltInParameter);        // 条形基础的底面偏移（根据Z轴定位线位置约束截面轮廓位置，内部使用）

        // 组
        DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION(GroupNameBuiltInParameter);
//    }
//}
#undef DEFINE_GBMP_BUILT_IN_PARAMETER_DEFINITION // 仅限该头文件中使用

